export default function unmountNode(node) {
    console.log("unmountNode -> node", node)
    const virtualDOM = node._virtualDOM
    // 文本节点 直接删除
    if(virtualDOM.type === 'text') {
        node.remove()
        return
    }

    // 判断节点是否由组件生成
    let component = virtualDOM.component
    if(component) {
        component.componentWillUnmount()
    }

    // 判断节点是否有ref属性？ 为什么？
    if(virtualDOM.props && virtualDOM.props.ref) {
        virtualDOM.props.ref(null)
    }

    // 判断节点是否有事件监听属性
    Object.keys(virtualDOM.props).forEach(propName => {
        if(propName.slice(0, 2) === 'on') {
            const eventName = propName.toLowerCase.slice(2)
            const handler = virtualDOM.props[propName]
            node.removeEventListener(eventName, handler)
        }
    })

    // 递归删除子节点
    const childNodes = node.childNodes
    if(childNodes.length > 0 ) {
        for(let i = 0; i < childNodes.length; i++) {
            unmountNode(childNodes[i])
            i--
        }
    }

    node.remove()
}